package lp2.projeto;

import java.util.ArrayList;
import java.util.List;

/**
 * 
 * @author Edgard,Tarcito,Raiff
 *
 */

public class Usuario {

	private String nome;
	private List<String> opinioes;
	private String dataEHora;
	private List<Integer> opinioesInteiros;/*Lista s� com os numeros inteiros referentes as notas dos estabelecimentos*/

	/**
	 * Constrtor de um Usuario
	 * @param nome nome do Usuario
	 * @param opinioes Lista das opinioes do Usuario
	 * @param dataEHora Data e Hora do cadastro do usuario
	 */
	public Usuario(String nome, List<String> opinioes, String dataEHora) {
		this.opinioes = opinioes;
		if(nome.equals("")){
			nome = "Anomimo";
		}
		this.nome = nome;
		this.dataEHora = dataEHora;
	}


	/**
	 * Retorna o nome do Usuario
	 * 
	 * @return nome
	 */

	public String getNome() {
		return nome;
	}


	/**
	 * Retorna a lista de Opinioes do Usuario
	 * 
	 * @return opinioes
	 */
	public List<String> getOpinioes() {
		return opinioes;
	}


	/**
	 * Retorna a Data e a Hora
	 * @return dataEHora
	 */
	public String getDataEHora() {
		return dataEHora;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((dataEHora == null) ? 0 : dataEHora.hashCode());
		result = prime * result + ((nome == null) ? 0 : nome.hashCode());
		result = prime * result + ((opinioes == null) ? 0 : opinioes.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Usuario other = (Usuario) obj;
		if (dataEHora == null) {
			if (other.dataEHora != null)
				return false;
		} else if (!dataEHora.equals(other.dataEHora))
			return false;
		if (nome == null) {
			if (other.nome != null)
				return false;
		} else if (!nome.equals(other.nome))
			return false;
		if (opinioes == null) {
			if (other.opinioes != null)
				return false;
		} else if (!opinioes.equals(other.opinioes))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "nome: " + nome + ", opinioes: " + opinioes
				+ ", dataEHora: " + dataEHora ;
	}
	
	public String getUsuarioProArquivo(){
            String linha = dataEHora +";" + nome + ";";
    		for (int i = 0; i < getOpinioes().size(); i++) {
    			linha += getOpinioes().get(i);
    			if (i < (getOpinioes().size() - 1)) {
    				linha += ";";
    			}
    		}
    		return linha;
	}

	
}
